#ifndef _MEMLAYOUT_H
#define _MEMLAYOUT_H

// 内存物理地址
#define EXTMEM      0x100000
#define PHYSTOP     0xE000000

// 外设寄存器物理基址
#define DEVSPACE    0xFE000000

// 虚拟地址
#define KERNBASE    0x80000000         // 内核虚拟地址基址
#define KERNLINK    (KERNBASE+EXTMEM)  // 内核代码段虚拟基址

// 内核物理地址和虚拟地址转换
#define V2P(a)      (((unsigned int) (a)) - KERNBASE)
#define P2V(a)      ((void *)(((char *) (a)) + KERNBASE))

#define V2P_WO(x)   ((x) - KERNBASE)
#define P2V_WO(x)   ((x) + KERNBASE)

#endif /* _MEMLAYOUT_H */